import os

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "orm_homework.settings")
import django

django.setup()
from app01 import models
from django.db.models import Q, F, Max, Min, Count, Avg, Sum

# 查找所有书名里包含金老板的书
ret = models.Book.objects.filter(title__contains='金老板')

# 查找出版日期是2018年的书

ret = models.Book.objects.filter(publish_date__contains='06')

# 查找出版日期是2017年的书名
ret = models.Book.objects.filter(publish_date__year=2017).values('title')

# 查找价格大于10元的书
ret = models.Book.objects.filter(price__gt=10)

# 查找价格大于10元的书名和价格
# 查找memo字段是空的书

ret = models.Book.objects.filter(Q(memo__isnull=True) | Q(memo=''))

# 查找在北京的出版社
ret = models.Publisher.objects.filter(city='北京')

# 查找名字以沙河开头的出版社
ret = models.Publisher.objects.filter(name__startswith='沙河')

# 查找“沙河出版社”出版的所有书籍
ret = models.Publisher.objects.filter(name='沙河出版社').values('book__title')
ret = models.Book.objects.filter(publisher__name='沙河出版社')

# 查找每个出版社出版价格最高的书籍价格
ret = models.Book.objects.values('publisher__name', 'publisher__city').annotate(max=Max('price'))
ret = models.Publisher.objects.annotate(max=Max('book__price')).values('id', 'name', 'max')

# 查找每个出版社的名字以及出的书籍数量
ret = models.Book.objects.values('publisher', 'publisher__name').annotate(count=Count('title'))

# 查找作者名字里面带“小”字的作者
# 查找年龄大于30岁的作者
# 查找手机号是155开头的作者
# 查找手机号是155开头的作者的姓名和年龄
#
# 查找每个作者写的价格最高的书籍价格
ret = models.Book.objects.values('author__name').annotate(max=Max('price'))
ret = models.Author.objects.annotate(max=Max('book__price')).values('name', 'max')
# 查找每个作者的姓名以及出的书籍数量
ret = models.Book.objects.values('author__name').annotate(count=Count('id'))
ret = models.Author.objects.annotate(count=Count('book__id')).values('name', 'count')

# 查找书名是“跟金老板学开车”的书的出版社
# 查找书名是“跟金老板学开车”的书的出版社所在的城市
# 查找书名是“跟金老板学开车”的书的出版社的名称
# 查找书名是“跟金老板学开车”的书的出版社出版的其他书籍的名字和价格
# book_obj = models.Book.objects.get(title='跟金老板学开车')
# ret = book_obj.publisher.book_set.exclude(title='跟金老板学开车').values('title', 'price')
# ret = models.Book.objects.filter(Q(publisher=models.Book.objects.get(title='跟金老板学开车').publisher), ~Q(title='跟金老板学开车'))
# ret = models.Book.objects.filter(publisher__book__title='跟金老板学开车').exclude(title='跟金老板学开车')

# 查找书名是“跟金老板学开车”的书的所有作者
# 查找书名是“跟金老板学开车”的书的作者的年龄
# 查找书名是“跟金老板学开车”的书的作者的手机号码
# 查找书名是“跟金老板学开车”的书的作者们的姓名以及出版的所有书籍名称和价钱

# ret = models.Book.objects.get(title='跟金老板学开车')
# for author in ret.author.all():
#     print(author.book_set.values('title','price','author__name'))


ret = models.Author.objects.filter(book__title='跟金老板学开车').values('name', 'book__title', 'book__price')
ret = models.Author.objects.values('name', 'book__title', 'book__price').filter(book__title='跟金老板学开车')

for i in ret:
    print(i)

# print(ret)
